RequestSlaveState
请求 EtherCAT 从站进入指定的 EtherCAT 状态。例如,若状态为 Op,而所请求的状态为 PreOp,则从站状态将会变更为 Op -> SafeOp -> PreOp;若状态为 Init,而所请求的状态为 Op,则从站状态将会变更为 Init -> PreOp -> SafeOp -> Op。
语法
KsCommandStatus RequestSlaveState(
int SlaveId,
EthercatState State
);
参数
SlaveId:即从站索引 (Slave Index)。此索引是 KINGSTAR 主站于 EtherCAT 网路启动时,根据实体连接顺序自动指派的。直接连线到主站的第一个装置会被指派为索引 0 (Index 0),接著是索引 1、索引 2,依此类推。即使新增、移除或重新连线装置,这些索引在从站阵列中也会保持一致。请参阅 热插拔 (HotConnect)、修复与重启 中的使用案例以了解更多详细资讯。
State:请求的 EtherCAT 状态。请见 EthercatState 类型。
回传值
回传 KsCommandStatus 结构。
备注
- EtherCAT 主站与从站皆需处在支援的状态中。
- 欲请求的 EtherCAT 状态不得高于主站状态。更多关于主站支援的状态资讯请见 RequestState。
可用的 EtherCAT 状态
ecatInit, ecatBoot, ecatPreOP, ecatSafeOP, ecatOP
范例
复制
SlaveStatus sStatus = { 0 };
nRet = GetSlaveById(0, &sStatus);
if (nRet == errNoError)
{
if (sStatus.State != ecatOffline) {
// You can follow the EtherCAT state diagram, or just enter the desired state.
// Switch to Init
WaitForCommand(3, TRUE, RequestSlaveState(0, ecatInit));
// Operate the slave in Init state
// Switch to Bootstrap
WaitForCommand(3, TRUE, RequestSlaveState(0, ecatBoot));
// Operate the slave in Bootstrap state
// Switch back to original state
WaitForCommand(3, TRUE, RequestSlaveState(0, sStatus.State));
}
}
使用需求
| RT | Win32 | |
|---|---|---|
| 最低支援版本 | 4.0 | 4.0 |
| 标头档 | ksapi.h | ksapi.h |
| 程式库 | KsApi_Rtss.lib | KsApi.lib |
参见